Single port memory is capable of performing a single operation, such as a read or a write, at a time. On the other hand, dual port memory is capable of performing multiple operations, such as a read and a write, substantially simultaneously.
Dual port memory consumes substantially more chip area and is substantially more complex and costly from development and qualification point of view as compared to single port memory. This is because dual port memory typically has two separate address buses, with one being for a read address and the other being for a write address, as well as two separate data buses, with one being for data read out from the memory and the other being for data written to the memory.
Due to its ability to read and write simultaneously, dual port memory is therefore desirable over single port memory for some applications. However, since the extra space consumed by dual port memory may be undesirable, designs have been derived that provide the functionality of dual port memory while not consuming substantially more surface area than single port memory.
These designs are known as pseudo dual port memory. However, such designs come with their own drawbacks. For example, such designs tend to be substantially slower than true dual port memory. In addition, such designs lose the capability of operating in single port mode, meaning that they cannot selectively operate in single port mode when desired. This also avoids the development of a separate compiler for single port memory.
Therefore, it is clear that further development in the area of pseudo dual port memory design is needed.